package com.sisgesbyte.services.localizacion;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.common.Validaciones;
import com.sisgesbyte.dao.beanDao.FiltrosSQLBean;
import com.sisgesbyte.dao.localizacion.LocalizacionDivisionDao;
import com.sisgesbyte.data.entity.localizacion.DivisionEntity;
import com.sisgesbyte.services.localizacion.bean.DivisionBean;
import com.sisgesbyte.services.localizacion.bean.ListaDivisionResponse;

@Stateless
public class MantenimientoDivisionImpl implements MantenimientoDivision {

	@EJB
	private LocalizacionDivisionDao localizacionDivisionDao;
	@Inject
	private Validaciones validaciones;
	
	@Override
	public ListaDivisionResponse listarDivision(String codTransaccion,FiltrosSQLBean cadenaFiltros) {
		String mensajeTransaccionMetodo = "[listarDivision idTx=" + codTransaccion + "] - ";
		ListaDivisionResponse response = new ListaDivisionResponse();
		List<DivisionEntity> reqDivision = null;
		
		try{
			response.setIdTransaccion(codTransaccion);
			try{
				reqDivision = localizacionDivisionDao.listaDivision(cadenaFiltros);
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al listar de  BD " + e);
				response.setCodigoRespuesta(ConstantesInternasSistema.DIVISION_LISTAR_COD_IDT64);
				response.setMensajeRespuesta(ConstantesInternasSistema.DIVISION_LISTAR_MSJ_IDT64);
				return response;
			}
			
			if(reqDivision.size()> 0){
				List<DivisionBean> listDivision = new ArrayList<DivisionBean>();
				for(DivisionEntity lista :reqDivision){
					DivisionBean bean = new DivisionBean();
					bean.setActive(lista.getActive());
					bean.setCodDivision(validaciones.validarCamposString(lista.getCod_division()));
					bean.setCodigo(validaciones.validarCampoInteger(lista.getId()));
					bean.setCodMap(validaciones.validarCamposString(lista.getCod_map()));
					bean.setCodPais(validaciones.validarCampoInteger(lista.getPais_id()));
					bean.setDivision(validaciones.validarCamposString(lista.getDivision()));
					bean.setLatMap(lista.getLat_map());
					bean.setLngMap(lista.getLng_map());
					bean.setPais(validaciones.validarCamposString(lista.getPais()));
					bean.setZoom(validaciones.validarCampoInteger(lista.getZoom_default()));
					listDivision.add(bean);
				}
				response.setListaDivision(listDivision);
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.DIVISION_LISTAR_COD_IDF63);
				response.setMensajeRespuesta(ConstantesInternasSistema.DIVISION_LISTAR_MSJ_IDF63);
			}
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " + e);
			response.setCodigoRespuesta(ConstantesInternasSistema.DIVISION_LISTAR_COD_IDT64);
			response.setMensajeRespuesta(ConstantesInternasSistema.DIVISION_LISTAR_MSJ_IDT64);
			return response;
		}
		return response;
	}

}
